#ifndef AECMODELER_INC_GLOBAL_H
#define AECMODELER_INC_GLOBAL_H

#ifdef AECMODELER_EXPORTS
#define DllImpExp __declspec(dllexport)
#else
#define DllImpExp __declspec(dllimport)
#endif


#define AECMODELER_NAMESPACE         AECModeler
#define AECMODELER_NAMESPACE_BEGIN   namespace AECModeler {
#define AECMODELER_NAMESPACE_END     }


#include <stdio.h>
#include <stdlib.h>
#include "zerrcodes.h"
#include "zepsilon.h"
#include "float.h"
#include "zflags.h"
#include "zmassert.h" 


AECMODELER_NAMESPACE_BEGIN

const double kPi = 3.14159265358979323846;      
const double kTwoPi = 6.28318530717958647692;    
const double kHalfPi = 1.57079632679489661923;
// 
const double kMaxReal = FLT_MAX ;  // A very big number, but not too big
const double kMinReal = FLT_MIN;
// DllImpExp extern const double kDeg2Rad;  // Degrees --> radians coefficient
const double kEpsZero = FLT_MIN;  // Really a very small value

//const int kTooBigInt = 10000000;    // Too big number of anything is 10 million


class UePoint2d;
class UeVector2d;
class UePoint3d;
class UeVector3d;
class UeIntPoint2d;
class UeIntVector2d;
class UeIntPoint3d;
class UeIntVector3d;
class UeTransf3d;
class UeLine3d;
class UeCircle3d;
class UePlane;
class UeInterval1d;
class UeInterval2d;
class UeInterval3d;
class UeIntInterval1d;
class UeIntInterval2d;
class UeIntInterval3d;
class UeEntity;
class UeBody;
class UeFace;
class UeEdge;
class UeVertex;
class UeSurface;
class UeCylinderSurface;
class UeConeSurface;
class UeSphereSurface;
class UeTorusSurface;
class UeCurve;
class UeCircleCurve;
class UePolygonVertexData;
class UeOutputPolylineCallback;
class UeOutputTriangleCallback;
class UeSaveRestoreCallback;
class UeTopologyChangeCallback;
class UeSaveToSatCallback;
class UeTriangleCache;
class UeDarray;
class UeMorphingMapElem;
class UeMorphingMap;
class UeVertexSurfaceData;
class UeHideIntegerTransform;


DllImpExp void UeSetKeepInputBodiesWhenBooleanOperationsFail(bool yesNo);
DllImpExp bool UeKeepInputBodiesWhenBooleanOperationsFail();

AECMODELER_NAMESPACE_END
#endif
